↳ Prolog
↳ PrologToPiTRSProof
rotate_in_ga(X, Y) → U1_ga(X, Y, append_in_aag(A, B, X))
append_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
append_in_aag([], Ys, Ys) → append_out_aag([], Ys, Ys)
U3_aag(X, Xs, Ys, Zs, append_out_aag(Xs, Ys, Zs)) → append_out_aag(.(X, Xs), Ys, .(X, Zs))
U1_ga(X, Y, append_out_aag(A, B, X)) → U2_ga(X, Y, append_in_gga(B, A, Y))
append_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
append_in_gga([], Ys, Ys) → append_out_gga([], Ys, Ys)
U3_gga(X, Xs, Ys, Zs, append_out_gga(Xs, Ys, Zs)) → append_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_ga(X, Y, append_out_gga(B, A, Y)) → rotate_out_ga(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
rotate_in_ga(X, Y) → U1_ga(X, Y, append_in_aag(A, B, X))
append_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
append_in_aag([], Ys, Ys) → append_out_aag([], Ys, Ys)
U3_aag(X, Xs, Ys, Zs, append_out_aag(Xs, Ys, Zs)) → append_out_aag(.(X, Xs), Ys, .(X, Zs))
U1_ga(X, Y, append_out_aag(A, B, X)) → U2_ga(X, Y, append_in_gga(B, A, Y))
append_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
append_in_gga([], Ys, Ys) → append_out_gga([], Ys, Ys)
U3_gga(X, Xs, Ys, Zs, append_out_gga(Xs, Ys, Zs)) → append_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_ga(X, Y, append_out_gga(B, A, Y)) → rotate_out_ga(X, Y)
ROTATE_IN_GA(X, Y) → U1_GA(X, Y, append_in_aag(A, B, X))
ROTATE_IN_GA(X, Y) → APPEND_IN_AAG(A, B, X)
APPEND_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U3_AAG(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
APPEND_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAG(Xs, Ys, Zs)
U1_GA(X, Y, append_out_aag(A, B, X)) → U2_GA(X, Y, append_in_gga(B, A, Y))
U1_GA(X, Y, append_out_aag(A, B, X)) → APPEND_IN_GGA(B, A, Y)
APPEND_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U3_GGA(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
APPEND_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_GGA(Xs, Ys, Zs)
rotate_in_ga(X, Y) → U1_ga(X, Y, append_in_aag(A, B, X))
append_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
append_in_aag([], Ys, Ys) → append_out_aag([], Ys, Ys)
U3_aag(X, Xs, Ys, Zs, append_out_aag(Xs, Ys, Zs)) → append_out_aag(.(X, Xs), Ys, .(X, Zs))
U1_ga(X, Y, append_out_aag(A, B, X)) → U2_ga(X, Y, append_in_gga(B, A, Y))
append_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
append_in_gga([], Ys, Ys) → append_out_gga([], Ys, Ys)
U3_gga(X, Xs, Ys, Zs, append_out_gga(Xs, Ys, Zs)) → append_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_ga(X, Y, append_out_gga(B, A, Y)) → rotate_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
ROTATE_IN_GA(X, Y) → U1_GA(X, Y, append_in_aag(A, B, X))
ROTATE_IN_GA(X, Y) → APPEND_IN_AAG(A, B, X)
APPEND_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U3_AAG(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
APPEND_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAG(Xs, Ys, Zs)
U1_GA(X, Y, append_out_aag(A, B, X)) → U2_GA(X, Y, append_in_gga(B, A, Y))
U1_GA(X, Y, append_out_aag(A, B, X)) → APPEND_IN_GGA(B, A, Y)
APPEND_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U3_GGA(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
APPEND_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_GGA(Xs, Ys, Zs)
rotate_in_ga(X, Y) → U1_ga(X, Y, append_in_aag(A, B, X))
append_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
append_in_aag([], Ys, Ys) → append_out_aag([], Ys, Ys)
U3_aag(X, Xs, Ys, Zs, append_out_aag(Xs, Ys, Zs)) → append_out_aag(.(X, Xs), Ys, .(X, Zs))
U1_ga(X, Y, append_out_aag(A, B, X)) → U2_ga(X, Y, append_in_gga(B, A, Y))
append_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
append_in_gga([], Ys, Ys) → append_out_gga([], Ys, Ys)
U3_gga(X, Xs, Ys, Zs, append_out_gga(Xs, Ys, Zs)) → append_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_ga(X, Y, append_out_gga(B, A, Y)) → rotate_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_GGA(Xs, Ys, Zs)
rotate_in_ga(X, Y) → U1_ga(X, Y, append_in_aag(A, B, X))
append_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
append_in_aag([], Ys, Ys) → append_out_aag([], Ys, Ys)
U3_aag(X, Xs, Ys, Zs, append_out_aag(Xs, Ys, Zs)) → append_out_aag(.(X, Xs), Ys, .(X, Zs))
U1_ga(X, Y, append_out_aag(A, B, X)) → U2_ga(X, Y, append_in_gga(B, A, Y))
append_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
append_in_gga([], Ys, Ys) → append_out_gga([], Ys, Ys)
U3_gga(X, Xs, Ys, Zs, append_out_gga(Xs, Ys, Zs)) → append_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_ga(X, Y, append_out_gga(B, A, Y)) → rotate_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_GGA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_IN_GGA(.(X, Xs), Ys) → APPEND_IN_GGA(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
APPEND_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAG(Xs, Ys, Zs)
rotate_in_ga(X, Y) → U1_ga(X, Y, append_in_aag(A, B, X))
append_in_aag(.(X, Xs), Ys, .(X, Zs)) → U3_aag(X, Xs, Ys, Zs, append_in_aag(Xs, Ys, Zs))
append_in_aag([], Ys, Ys) → append_out_aag([], Ys, Ys)
U3_aag(X, Xs, Ys, Zs, append_out_aag(Xs, Ys, Zs)) → append_out_aag(.(X, Xs), Ys, .(X, Zs))
U1_ga(X, Y, append_out_aag(A, B, X)) → U2_ga(X, Y, append_in_gga(B, A, Y))
append_in_gga(.(X, Xs), Ys, .(X, Zs)) → U3_gga(X, Xs, Ys, Zs, append_in_gga(Xs, Ys, Zs))
append_in_gga([], Ys, Ys) → append_out_gga([], Ys, Ys)
U3_gga(X, Xs, Ys, Zs, append_out_gga(Xs, Ys, Zs)) → append_out_gga(.(X, Xs), Ys, .(X, Zs))
U2_ga(X, Y, append_out_gga(B, A, Y)) → rotate_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
APPEND_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
APPEND_IN_AAG(.(X, Zs)) → APPEND_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs: